# !/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
===========================
@Time : 2022/9/12 0012 4:33
@Author : 测试开发工程师
@File : 2. linux 进程与线程.py
@Software: PyCharm
============================
"""

"""
获取帮助：
    man ps
    ps --help

进程：
    可执行程序的运行态
    操作系统调度的基本单位
    线程容器
    进程本身包含指令，数据等资源

线程：
    进程中被执行的最小单元
    cpu 调度的基本单位
    线程带有指令，数据等资源
    
进程的生命周期：
    create(创建) - ready(可被cpu调度) - running(运行) - wating(等待) - terminated(结束)

常用进程管理命令：
    ps 进程列表快照
        unix 风格参数: ps -ef  ：UID(当前用户id)，PID(进程id)，PPID(父进程id)，Time(启动时间)，CMD(执行命令)
        bsd 风格参数： ps aux  ：进程运行当时的性能数据和状态
        gnu 风格参数： ps --pid pid,ppid,psr,thcount,tid,pcpu,pmem,status,cmd -M   PID(进程id)，PPID(父进程id)，PSR(进程跑在哪一个cpu核上),THCNT(线程数)
                        TID(线程唯一id),PCPU(cpu),PMEM(内存),STATUS(进程状态),CMD(执行命令)
    top 交互式进程观测
    kill killall 结束进程
    fg 进程切换到前台
    bg 进程切换到后台
    ctrl z 挂起进程
    
进程知识练习： https://ceshiren.com/t/topic/14248
    查看每一步进程状态：
        创建2个子进程，4个子线程    python hasattr_demo.py 2 4 &(前台进程放在后台)
        jobs: 列举后台的进程
        fg：把后台进程调到前台
        ctrl z： 挂起进程（进程停止，但没有销毁）
        bg：让停止的进程重新放到后台进行运行
        kill 进程id: 杀掉进程
        
           

"""